package _09_Method;
/**
 *  语法结构
[修饰符列表] 返回值类型 方法名 (参数列表){ 方法体; }

[] : 加中括号的意思是,可以有,可以没有,可以有多个
修饰符列表 :
权限修饰符 : public private
其他 : static 修饰成员或静态 , 不加static就是成员

返回值类型 : 
运行完方法之后,是否需要响应数据
如果不需要,就写void
如果有,就需要写 返回数据对应的类型(11种数据类型)

所以返回值类型的值为
void+11种数据类型
8种基本
3种引用

如果方法有返回值类型,那么方法体内 必须有return语句,并且 return语句后面 需要加上和返回值类型对应的值
比如 返回值为int 那么 必须要有 return 1;  只要是int值就行,不一定非得是1
注意 return 有终止函数运行的作用(return以后的代码不执行,不能出现任何代码)

如果没有返回值类型,方法体内,就可以没有return,当然也可以有,并且return语句后面 不能添加任何数据,只能起到结束函数运行的作用
函数就是方法

Return语句并不是必须要在程序的最后,

方法名
望文知意
命名规范
符合标识符要求 : 
大小写字母,美元符号,下划线,数字,数字不能打头,不能单独使用关键字和保留字

参数列表 : 
就是使用这个方法,需要传递的数据

形参 : 
 是指在方法定义处,需要传入的参数类型的定义
实参 :
 调用方法的时候,实际传入的值 

方法参数列表中的变量,是局部变量
并且参数列表中可以定义多个变量,多个之间用 逗号 , 隔开
也可以没有,即使没有参数列表, () 小括号还是要有的,这是语法问题

方法体 : 
代码段,保存代码

 * @author lenovo
 *
 */
public class Method_02 {

	public static void main(String[] args) {
		// 重复功能的代码只写一遍,想要多次完成某个功能,就多次使用这个方法即可
		// 传入的参数不同,函数的返回值也会不同
		int a = 1;
		sumInt(a, 2);// 1+2=3
		sumInt(10, 11);// 10+11=21
		sumInt(100, 200);// 100+200=300
		sumDouble(0.1, 0.2);// 0.1+0.2=0.3
		m1(1);
		// 方法返回值是1
		System.out.println(m1(1));
	}

	// a和b是传递过来的
	public static int sumInt(int a, int b) {
		// 形参不能在方法中重复定义
		// long a = 2L ;
		int c = a + b;
		System.out.println(a + "+" + b + "=" + c);
		return c;
	}

	public static void sumDouble(double a, double b) {
		double c = a + b;
		System.out.println(a + "+" + b + "=" + c);
	}

	// 可以使用多的修饰符修饰方法
	// 静态 最终 同步锁
	public static final synchronized void sss() {

	}

	/**
	 * 方法名命名规则: 1.首字母:英文或者$ 2.由英文,$,和数字构成 3.不能使用关键字和保留字 4.首字母小写,驼峰命名法
	 */

	public static void class1() {

	}

	/**
	 * 如果参数大于0 返回1
	 * 
	 * 否则返回-1
	 */
	public static int m1(int i) {
		// if单分支,有不执行的情况
		// 改进方法是用if-else结构,或在结尾加return
		if (true) {
			return 1;
		}
		return -1;
	}
}